package pe.edu.cibertec.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;

@Entity
@Table(name = "tab_client")
public class Cliente implements Serializable {

    @Id
    @Column(name = "identifier")
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "tablaSecuencia")
    @TableGenerator(name = "tablaSecuencia",
            table = "tab_sequence",
            pkColumnName="TABLENAME",
            valueColumnName = "TABLEVALUE",
            pkColumnValue = "TAB_CLIENT",
            allocationSize = 2)
    private Integer codigo;
    @Column(name = "firstname")
    private String nombre;
    @Column(name = "lastname")
    private String apellido;
    @Column(name = "recorddate", updatable = false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaRegistro;
    @Column(name = "verifydate", insertable = false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaVerificacion;
    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name = "direccion", column =
                @Column(name = "ADDRESS")),
        @AttributeOverride(name = "codigoPostal", column =
                @Column(name = "POSTALCODE"))
    })
    private Direccion direccion;

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public Date getFechaVerificacion() {
        return fechaVerificacion;
    }

    public void setFechaVerificacion(Date fechaVerificacion) {
        this.fechaVerificacion = fechaVerificacion;
    }

    public Direccion getDireccion() {
        return direccion;
    }

    public void setDireccion(Direccion direccion) {
        this.direccion = direccion;
    }
}
